package cn.edu.jxau.util;

/**
 * 栈
 * @author 付大石
 */
abstract public class Stack<T> implements Iterable<T> {
    
    /**
     * 栈中元素数量
     * @return
     */
    public abstract int size();
    
    /**
     * 栈是否为空
     * @return
     */
    public boolean isEmpty() {
        return size() == 0;
    }
    
    /**
     * 取栈顶元素，不弹出
     * @return
     */
    public abstract T peek();
    
    /**
     * 弹出栈顶元素
     * @return
     */
    public abstract T pop();
    
    /**
     * 压入一个元素
     * @param item
     */
    public abstract void push(T item);
    
    @Override
    public abstract String toString();
}
